# 当前文件负责各个功能函数的实现
# 当前文件，仅定义函数，调用函数需要到总控中心cards_main中调用
# 实现功能：显示菜单，新建名片，显示全部名片，查询名片，修改名片，删除名片


card_list = [
    {'name':'小王','phone':'10086','qq':'12345','email':'2345.com'}
]
#name,phone,qq,email

#01 定义显示菜单
def show_menu():
    print('*' * 50)
    print('欢迎使用[名片管理系统] v1.0')
    print()
    print('1.新建名片')
    print('2.显示全部')
    print('3.查询名片')
    print('0.退出系统')
    print()
    print('*' * 50)

# 02 新建名片
def new_card():
    # 1.获取用户输入信息
    name_str = input('请输入姓名：')
    phone_str = input('请输入电话：')
    qq_str = input('请输入qq号码：')
    email_str = input('请输入电子邮箱')
    # 2.将获取的信息保存到字典中
    new_dict = {'name':name_str,'phone':phone_str,'qq':qq_str,'email':email_str}
    # 3.将字典保存全局变量中  列表中
    card_list.append(new_dict)
    # 4.打印提示信息
    print('新建姓名是%s 的名片成功' % name_str)


#03显示全部名片函数

def show_all_card():
    if len(card_list) == 0:
        print('当前名片列表中没有数据，请新建名片')
    else:
        print('-' * 50)
        print('姓名'.ljust(10), '电话'.ljust(10), 'qq号码'.ljust(10), 'email'.ljust(10),sep='\t')
        print('-' * 50)
        for item in card_list:
            print(item.get('name').ljust(10),item.get('phone').ljust(10),item.get('qq').ljust(10),item.get('email').ljust(10),sep ='\t')
        print('-' * 50)

#04 搜索名片
def search_card():
    # 1.获取用户输入信息
    find_name = input('请输入您要查询的姓名：')
    # 2.拿着要查询的名字，打印详情
    for item in card_list:
    #        如果找到了，打印表头
        if item.get('name') == find_name:
            print('-' * 50)
            print('姓名'.ljust(10), '电话'.ljust(10), 'qq号码'.ljust(10), 'email'.ljust(10), sep='\t')
            print('-' * 50)
            print(item.get('name').ljust(10), item.get('phone').ljust(10), item.get('qq').ljust(10),
                          item.get('email').ljust(10), sep='\t')
            print('-' * 50)
            deal_card(item)
            break
    #        如果没找到，打印提示信息
    else:
        print('没有找到姓名是%s的信息，请核对后重新输入！' % find_name)

#5 查询后操作名片

def deal_card(find_dict):
    # 1.获取用户输入的信息
    op = input('请输入对名片的操作选择[1.修改,2.删除,0.返回上一级]：')
    # 2.流程控制
    if op == '1':
       find_dict['name'] = input_update('请输入修改后的姓名[不修改直接回车]：',find_dict.get('name'))
       find_dict['phone'] = input_update('请输入修改后的电话[不修改直接回车]：',find_dict.get('phone'))
       find_dict['qq'] = input_update('请输入修改后的qq号码[不修改直接回车]：',find_dict.get('qq'))
       find_dict['email'] = input_update('请输入修改后的邮箱[不修改直接回车]：',find_dict.get('email'))
    elif op =='2':
        card_list.remove(find_dict)
    elif op == '0':
        print('返回上一级')
    else:
        print('您的输入有误，请重新输入！')


def input_update(msq,dict_value):
    # 1.使用input获取用户的信息
     info = input(msq)
    # 如果用户输入了内容
    #      返回输入的内容
     if len(info) >0:
        return info
    # 如果没有输入内容
    #    返回
     else:
        return dict_value

#把名片保存在文件中
def save_data_to_file():
    file = open('card_data.txt','w',encoding='utf-8')
    file.write(str(card_list))
    file.close()

#8.启动名片管理系统时，读取文件数据，同步到程序中

def load_file_to_data():
    file = open('card_data.txt',encoding='utf-8')
    text = file.read()
    global card_list
    card_list =text
    card_list = eval(text)
    file.close()

